package com.mycms.architecture.jsf.component;

import javax.el.ELException;
import javax.el.ValueExpression;
import javax.faces.FacesException;
import javax.faces.component.UIComponentBase;

public abstract class MyCMSUIComponent extends UIComponentBase
{

	/**
	 * Risolve un binding (parametro) fornendo il nome.
	 * 
	 * @param <T> tipo del valore atteso.
	 * @param name nome del parametro.
	 * @param classe classe del valore di ritorno atteso.
	 * @return valore del binding.
	 */
	@SuppressWarnings("unchecked")
	protected <T> T resolveBinding(String name, Class<T> classe)
	{
		ValueExpression ve = getValueExpression(name);
		if (ve != null)
		{
			try
			{
				return ((T) ve.getValue(getFacesContext().getELContext()));
			}
			catch (ELException e)
			{
				throw new FacesException(e);
			}
		}
		else
		{
			return null;
		}
	}

}
